package com.kujie.utils;

import com.kujie.loader.file.TemplateManager;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;

public class SmartPromptUtil {

    private static final TemplateManager templateManager = new TemplateManager();

    /**
     * 根据角色生成系统提示
     *
     * @param role 用户角色
     * @return 完整的系统提示内容
     */
    public static String generateSystemPrompt(String role) {
        try {
            // 加载角色对应的模板
            String template = templateManager.getTemplateForRole(role);

            // 替换模板中的占位符
            return replacePlaceholders(template);
        } catch (Exception e) {
            System.err.println("生成系统提示时出错: " + e.getMessage());
            return "系统提示生成失败";
        }
    }

    /**
     * 替换模板中的占位符
     *
     * @param template 模板内容
     * @return 替换后的模板内容
     */
    private static String replacePlaceholders(String template) {
        LocalDateTime now = LocalDateTime.now();

        // 获取当前时间信息
        Map<String, String> placeholders = new HashMap<>();
        placeholders.put("{time}", now.format(DateTimeFormatter.ofPattern("HH:mm:ss")));
        placeholders.put("{day}", now.getDayOfWeek().toString());
        placeholders.put("{season}", TimeUtil.getCurrentSeason(now.getMonthValue()));
        placeholders.put("{week}", String.valueOf(now.getDayOfYear() / 7 + 1));
        placeholders.put("{city}", "北京"); // 这里可以替换为实际的位置获取逻辑

        // 替换占位符
        String result = template;
        for (Map.Entry<String, String> entry : placeholders.entrySet()) {
            result = result.replace(entry.getKey(), entry.getValue());
        }

        return result;
    }
}